home *** CD-ROM | disk | FTP | other *** search
- package ms.applet;
-
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.PrintStream;
- import java.net.URL;
- import java.net.URLConnection;
- import java.util.Hashtable;
- import sun.misc.MessageUtils;
-
- class AppletClassLoader extends ClassLoader {
- boolean verboseClassLoading = false;
- Hashtable classes = new Hashtable();
- URL base;
- AppletViewer mAppletViewer;
- String mUrlCacheFileName;
-
- AppletClassLoader(AppletViewer var1, URL var2) {
- this.mAppletViewer = var1;
- this.base = var2;
- }
-
- private Class loadClass(URL var1) throws IOException {
- Object var2 = null;
-
- try {
- Class var22;
- try {
- int var5 = -1;
-
- try {
- File var20 = this.mAppletViewer.getUrlCacheFile(var1);
- this.mUrlCacheFileName = var20.getAbsolutePath();
- var2 = new FileInputStream(var20);
- var5 = (int)var20.length();
- } catch (Exception var15) {
- this.mUrlCacheFileName = null;
- URLConnection var6 = var1.handler.openConnection(var1);
- var6.setAllowUserInteraction(false);
- var2 = var6.getInputStream();
- var5 = var6.getContentLength();
- }
-
- byte[] var21 = new byte[var5 == -1 ? 4096 : var5];
- int var7 = 0;
- Thread var9 = Thread.currentThread();
-
- int var8;
- while((var8 = ((InputStream)var2).read(var21, var7, var21.length - var7)) >= 0 && !var9.isInterrupted()) {
- if ((var7 += var8) == var21.length) {
- if (var5 >= 0) {
- break;
- }
-
- byte[] var10 = new byte[var7 * 2];
- System.arraycopy(var21, 0, var10, 0, var7);
- var21 = var10;
- }
- }
-
- if (var9.isInterrupted()) {
- throw new IOException("class loading interrupted: " + var1);
- }
-
- this.mUrlCacheFileName = null;
- if (!super.initialized) {
- throw new SecurityException("Security Exception: ClassLoader object not initialized.");
- }
-
- var22 = super.defineClass0(var21, 0, var7);
- } finally {
- this.mUrlCacheFileName = null;
- if (var2 != null) {
- ((InputStream)var2).close();
- }
-
- }
-
- return var22;
- } catch (IOException var17) {
- this.mUrlCacheFileName = null;
- ((Throwable)var17).printStackTrace();
- throw var17;
- } catch (Throwable var18) {
- this.mUrlCacheFileName = null;
- var18.printStackTrace();
- throw new IOException("class not loaded: " + var1);
- }
- }
-
- public Class loadClass(String var1) throws ClassNotFoundException {
- return this.loadClass(var1, true);
- }
-
- protected Class loadClass(String var1, boolean var2) throws ClassNotFoundException {
- Class var3 = (Class)this.classes.get(var1);
- if (var3 == null) {
- SecurityManager var4 = System.security;
- if (var4 != null) {
- int var5 = var1.lastIndexOf(46, var1.count - 1);
- if (var5 >= 0) {
- var4.checkPackageAccess(var1.substring(0, var5));
- }
- }
-
- try {
- if (!super.initialized) {
- throw new SecurityException("Security Exception: ClassLoader object not initialized.");
- }
-
- return super.findSystemClass0(var1);
- } catch (Throwable var6) {
- var3 = this.findClass(var1);
- }
- }
-
- if (var3 == null) {
- throw new ClassNotFoundException(var1);
- } else {
- if (var2) {
- if (!super.initialized) {
- throw new SecurityException("Security Exception: ClassLoader object not initialized.");
- }
-
- super.resolveClass0(var3);
- }
-
- return var3;
- }
- }
-
- void errorMsg(String var1, String var2) {
- PrintStream var10000 = System.err;
- String var3 = "appletloader." + var1;
- var10000.println(MessageUtils.subst(System.getProperty(var3), var2));
- }
-
- void errorMsg(String var1, String var2, String var3) {
- PrintStream var10000 = System.err;
- String var4 = "appletloader." + var1;
- var10000.println(MessageUtils.subst(System.getProperty(var4), var2, var3));
- }
-
- private synchronized Class findClass(String var1) {
- Class var2 = (Class)this.classes.get(var1);
- if (var2 != null) {
- return var2;
- } else {
- if (this.verboseClassLoading) {
- PrintStream var10000 = System.out;
- StringBuffer var10001 = new StringBuffer();
- Thread var3 = Thread.currentThread();
- char[] var4 = var3.name;
- var10000.println(var10001.append(new String(var4)).append(" find class ").append(var1).toString());
- }
-
- SecurityManager var15 = System.security;
- if (var15 != null) {
- int var16 = var1.lastIndexOf(46, var1.count - 1);
- if (var16 >= 0) {
- var15.checkPackageDefinition(var1.substring(0, var16));
- }
- }
-
- String var17 = var1.replace('.', '/') + ".class";
-
- try {
- URL var5 = this.base;
- String var18 = var5.handler.toExternalForm(var5);
- URL var6 = new URL(var18 + var17);
- if (this.verboseClassLoading) {
- System.out.println("Opening stream to: " + var6 + " to get " + var1);
- }
-
- var2 = this.loadClass(var6);
- if (!var1.equals(var2.getName())) {
- Class var7 = var2;
- Object var14 = null;
- throw new ClassFormatError(var1 + " != " + var7.getName());
- }
-
- this.classes.put(var1, var2);
- } catch (FileNotFoundException var8) {
- this.errorMsg("filenotfound", var1);
- } catch (ClassFormatError var9) {
- this.errorMsg("fileformat", var1);
- } catch (IOException var10) {
- this.errorMsg("fileioexception", var1);
- } catch (Exception var11) {
- this.errorMsg("fileexception", ((Throwable)var11).toString(), var1);
- } catch (ThreadDeath var12) {
- this.errorMsg("filedeath", var1);
- throw var12;
- } catch (Error var13) {
- this.errorMsg("fileerror", ((Throwable)var13).toString(), var1);
- }
-
- return var2;
- }
- }
- }
-